BIN = bin
OBJ = obj
SRC = src
LIB = lib
INC = include
CPPFLAGS = -I${INC}/ -Wall -O 

all: $(BIN)/mp2gzip $(BIN)/mp2gunzip

$(OBJ)/Vector.o : $(SRC)/Vector.cpp $(INC)/Vector.h $(INC)/crc.h 
	g++ -c $(CPPFLAGS) $(SRC)/Vector.cpp -o $(OBJ)/Vector.o -pg

$(OBJ)/LZcoder.o : $(SRC)/LZcoder.cpp $(INC)/LZcoder.h $(INC)/Cadena.h $(INC)/crc.h
	g++ -c $(CPPFLAGS) $(SRC)/LZcoder.cpp -o $(OBJ)/LZcoder.o -pg

$(OBJ)/Cadena.o : $(SRC)/Cadena.cpp $(INC)/Cadena.h $(INC)/crc.h
	g++ -c $(CPPFLAGS) $(SRC)/Cadena.cpp -o $(OBJ)/Cadena.o -pg

$(OBJ)/crc.o : $(SRC)/crc.cpp $(INC)/crc.h
	g++ -c $(CPPFLAGS) $(SRC)/crc.cpp -o $(OBJ)/crc.o -g

$(OBJ)/TablaHuffmanLC.o : $(SRC)/TablaHuffmanLC.cpp $(INC)/TablaHuffmanLC.h $(INC)/VectorBits.h
	g++ -c $(CPPFLAGS) $(SRC)/TablaHuffmanLC.cpp -o $(OBJ)/TablaHuffmanLC.o -pg

$(OBJ)/TablaHuffmanD.o : $(SRC)/TablaHuffmanD.cpp $(INC)/TablaHuffmanD.h $(INC)/VectorBits.h
	g++ -c $(CPPFLAGS) $(SRC)/TablaHuffmanD.cpp -o $(OBJ)/TablaHuffmanD.o -pg

$(OBJ)/VectorBits.o : $(SRC)/VectorBits.cpp $(INC)/VectorBits.h
	g++ -c $(CPPFLAGS) $(SRC)/VectorBits.cpp -o $(OBJ)/VectorBits.o

$(OBJ)/TablaDistancia.o : $(SRC)/TablaDistancia.cpp $(INC)/TablaDistancia.h $(INC)/VectorBits.h
	g++ -c $(CPPFLAGS) $(SRC)/TablaDistancia.cpp -o $(OBJ)/TablaDistancia.o -pg

$(OBJ)/TablaLongitud.o : $(SRC)/TablaLongitud.cpp $(INC)/TablaLongitud.h $(INC)/VectorBits.h
	g++ -c $(CPPFLAGS) $(SRC)/TablaLongitud.cpp -o $(OBJ)/TablaLongitud.o -pg

$(OBJ)/mp2gzip.o : $(SRC)/mp2gzip.cpp $(INC)/TablaLongitud.h $(INC)/TablaDistancia.h $(INC)/VectorBits.h $(INC)/TablaHuffmanD.h $(INC)/TablaHuffmanLC.h $(INC)/crc.h $(INC)/LZcoder.h $(INC)/Vector.h
	g++ -c $(CPPFLAGS) $(SRC)/mp2gzip.cpp -o $(OBJ)/mp2gzip.o -pg

$(BIN)/mp2gzip : $(OBJ)/mp2gzip.o $(OBJ)/TablaLongitud.o $(OBJ)/TablaDistancia.o $(OBJ)/VectorBits.o $(OBJ)/TablaHuffmanD.o $(OBJ)/TablaHuffmanLC.o $(OBJ)/crc.o $(OBJ)/LZcoder.o $(OBJ)/Cadena.o $(OBJ)/Vector.o
	g++ -o $(BIN)/mp2gzip $(OBJ)/mp2gzip.o $(OBJ)/TablaLongitud.o $(OBJ)/TablaDistancia.o $(OBJ)/VectorBits.o $(OBJ)/TablaHuffmanD.o $(OBJ)/TablaHuffmanLC.o $(OBJ)/crc.o $(OBJ)/LZcoder.o $(OBJ)/Cadena.o $(OBJ)/Vector.o -pg

$(OBJ)/GunLZcoder.o : $(SRC)/GunLZcoder.cpp $(INC)/TablaLongitud.h $(INC)/TablaDistancia.h $(INC)/VectorBits.h $(INC)/TablaHuffmanD.h $(INC)/TablaHuffmanLC.h $(INC)/Vector.h
	g++ -c $(CPPFLAGS) $(SRC)/GunLZcoder.cpp -o $(OBJ)/GunLZcoder.o -pg

$(OBJ)/mp2gunzip.o : $(SRC)/mp2gunzip.cpp $(INC)/TablaLongitud.h $(INC)/TablaDistancia.h $(INC)/VectorBits.h $(INC)/TablaHuffmanD.h $(INC)/TablaHuffmanLC.h $(INC)/crc.h $(INC)/LZcoder.h $(INC)/Vector.h $(INC)/GunLZcoder.h
	g++ -c $(CPPFLAGS) $(SRC)/mp2gunzip.cpp -o $(OBJ)/mp2gunzip.o -pg

$(BIN)/mp2gunzip : $(OBJ)/mp2gunzip.o $(OBJ)/TablaLongitud.o $(OBJ)/TablaDistancia.o $(OBJ)/VectorBits.o $(OBJ)/TablaHuffmanD.o $(OBJ)/TablaHuffmanLC.o $(OBJ)/crc.o $(OBJ)/LZcoder.o $(OBJ)/Cadena.o $(OBJ)/Vector.o $(OBJ)/GunLZcoder.o
	g++ -o $(BIN)/mp2gunzip $(OBJ)/mp2gunzip.o $(OBJ)/TablaLongitud.o $(OBJ)/TablaDistancia.o $(OBJ)/VectorBits.o $(OBJ)/TablaHuffmanD.o $(OBJ)/TablaHuffmanLC.o $(OBJ)/crc.o $(OBJ)/LZcoder.o $(OBJ)/Cadena.o $(OBJ)/Vector.o $(OBJ)/GunLZcoder.o -pg

clean:
	echo "Limpiando...."
	-rm ${OBJ}/*.o ${INC}/*~ ${SRC}/*~

mrproper: clean
	-rm bin/* 

documentacion:
	doxygen doc/Doxyfile

